package com.fjwt.gz.proxy.ctrl.sysuser;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fjwt.gz.core.constants.Constants;
import com.fjwt.gz.core.model.ApiRes;
import com.fjwt.gz.db.dto.SysExportTaskDTO;
import com.fjwt.gz.db.entity.SysExportTaskEntity;
import com.fjwt.gz.proxy.ctrl.CommonCtrl;
import com.fjwt.gz.service.impl.SysExportTaskService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * <p>
 * 异步执行导出报表任务表
 * </p>
 *
 * @author shiyonghao
 * @since 2025-07-22
 */
@Slf4j
@RestController
@RequestMapping("/api/export/task")
public class SysExportTaskController extends CommonCtrl {

    @Autowired
    private SysExportTaskService sysExportTaskService;


    /**
     * 下载列表
     */
    @GetMapping
    public ApiRes list(){
        SysExportTaskDTO sysExportTaskDTO = getObject(SysExportTaskDTO.class);
        log.info("机构端查询下载列表，请求地址：/api/export/task，请求参数：{}",JSONUtil.toJsonStr(sysExportTaskDTO));
        LambdaQueryWrapper<SysExportTaskEntity> gw = SysExportTaskEntity.gw();
        gw.eq(SysExportTaskEntity::getSysType, Constants.SYS_ROLE_TYPE.PROXY);
        gw.eq(ObjectUtils.isNotEmpty(sysExportTaskDTO.getUserName()), SysExportTaskEntity::getUserName, sysExportTaskDTO.getUserName());
        gw.eq(ObjectUtils.isNotEmpty(sysExportTaskDTO.getResourceType()), SysExportTaskEntity::getResourceType, sysExportTaskDTO.getResourceType());
        gw.eq(ObjectUtils.isNotEmpty(sysExportTaskDTO.getFileName()), SysExportTaskEntity::getFileName, sysExportTaskDTO.getFileName());
        gw.eq(ObjectUtils.isNotEmpty(sysExportTaskDTO.getSerialNo()), SysExportTaskEntity::getSerialNo, sysExportTaskDTO.getSerialNo());
        gw.eq(ObjectUtils.isNotEmpty(sysExportTaskDTO.getStatus()), SysExportTaskEntity::getStatus, sysExportTaskDTO.getStatus());
        gw.between(ObjectUtils.isNotEmpty(sysExportTaskDTO.getStartTime()) && ObjectUtils.isNotEmpty(sysExportTaskDTO.getEndTime()),
                SysExportTaskEntity::getCreatedAt, sysExportTaskDTO.getStartTime(), sysExportTaskDTO.getEndTime());
        gw.orderByDesc(SysExportTaskEntity::getCreatedAt);

        IPage<SysExportTaskEntity> page = sysExportTaskService.page(getIPage(), gw);
        log.info("机构端查询下载列表，请求地址：/api/export/task，返回结果：{}",JSONUtil.toJsonStr(page));
        return ApiRes.page(page);
    }

}

